package fwdChecking;

import java.io.*;
import java.util.*;

import csp.*;
import csp.Knoten.Werte;

/*
 * Domains Reduzieren, CSP Skript S.18:
 * 
 * reduceDomains (X, Y) : boolean
 * 	reduced := false
 * 	foreach(x in X.domain())
 * 		if(not ELEMENT y in Y.domain() | (X:=x, Y:=y) ist konsistent)
 * 			X.reduceDomain(x)
 * 			reduced := true
 * 	return reduced
 *  * 
 */

public class FwdChecking {

	public boolean reduceDomains(Knoten x)
	{	
		for(Knoten k : x.getNachbarn() ) {
			
			if(k.getWertebereich().isEmpty())
				return false; //CSP nicht lösbar, da leerer wertebereich
			
			k.getWertebereich().remove(x.getWert());
			//TODO: evtl. nochmal abfragen ob Wertebereich leer ist?
		}
		return true;
	}
	
}
